package com.ruoyi.fun.service;

import java.util.List;
import com.ruoyi.fun.domain.EcProduct;

/**
 * 商品Service接口
 * 
 * @author ruoyi
 * @date 2025-08-06
 */
public interface IEcProductService 
{
    /**
     * 查询商品
     * 
     * @param productId 商品主键
     * @return 商品
     */
    public EcProduct selectEcProductByProductId(Long productId);

    /**
     * 查询商品列表
     * 
     * @param ecProduct 商品
     * @return 商品集合
     */
    public List<EcProduct> selectEcProductList(EcProduct ecProduct);
    
    /**
     * 根据分类ID列表查询商品列表
     * 
     * @param categoryIds 分类ID列表
     * @return 商品集合
     */
    public List<EcProduct> selectEcProductListByCategoryIds(List<Long> categoryIds);

    /**
     * 新增商品
     * 
     * @param ecProduct 商品
     * @return 结果
     */
    public int insertEcProduct(EcProduct ecProduct);

    /**
     * 修改商品
     * 
     * @param ecProduct 商品
     * @return 结果
     */
    public int updateEcProduct(EcProduct ecProduct);

    /**
     * 批量删除商品
     * 
     * @param productIds 需要删除的商品主键集合
     * @return 结果
     */
    public int deleteEcProductByProductIds(Long[] productIds);
    
    /**
     * 批量删除商品（带组织ID）
     * 
     * @param productIds 需要删除的商品主键集合
     * @param orgId 组织ID
     * @return 结果
     */
    public int deleteEcProductByProductIds(Long[] productIds, Long orgId);

    /**
     * 删除商品信息
     * 
     * @param productId 商品主键
     * @return 结果
     */
    public int deleteEcProductByProductId(Long productId);

    /**
     * 根据productId和组织ID查询Product
     * 
     * @param productId Product主键
     * @param orgId 组织ID
     * @return Product
     */
    public EcProduct selectEcProductByProductIdAndOrgId(Long productId, Long orgId);

    /**
     * 根据组织ID查询Product列表
     * 
     * @param ecproduct Product
     * @param orgId 组织ID
     * @return Product集合
     */
    public List<EcProduct> selectEcProductListByOrgId(EcProduct ecproduct, Long orgId);

    /**
     * 导入商品数据
     * 
     * @param productList 商品数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @param orgId 组织ID
     * @return 结果
     */
    public String importProduct(List<EcProduct> productList, Boolean isUpdateSupport, String operName, Long orgId);

    /**
     * 更新商品销量
     * 
     * @param productId 商品ID
     * @param increment 增量（默认为1）
     * @return 结果
     */
    public int updateProductSaleCount(Long productId, int increment);

    /**
     * 更新商品浏览量
     * 
     * @param productId 商品ID
     * @param increment 增量（默认为1）
     * @return 结果
     */
    public int updateProductViewCount(Long productId, int increment);

    /**
     * 更新商品评论数
     * 
     * @param productId 商品ID
     * @param increment 增量（默认为1）
     * @return 结果
     */
    public int updateProductCommentCount(Long productId, int increment);
}
